package models

import (
	"time"
	"order_srv/basic/config"
)

// FinancialReconciliation 财务对账记录
type FinancialReconciliation struct {
	Id              uint32    `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	OrderId         uint32    `gorm:"column:order_id;type:int UNSIGNED;comment:关联订单ID;not null;" json:"order_id"` // 关联订单ID
	OrderSn         string    `gorm:"column:order_sn;type:varchar(255);not null;" json:"order_sn"`
	TransactionType uint8     `gorm:"column:transaction_type;type:tinyint UNSIGNED;comment:交易类型 1-收入 2-支出;not null;" json:"transaction_type"` // 交易类型 1-收入 2-支出
	Amount          float64   `gorm:"column:amount;type:decimal(10, 2);comment:总金额;not null;" json:"amount"`                         // 总金额
	PlatformRevenue float64   `gorm:"column:platform_revenue;type:decimal(10, 2);comment:平台收入;not null;" json:"platform_revenue"`    // 平台收入
	DriverRevenue   float64   `gorm:"column:driver_revenue;type:decimal(10, 2);comment:司机收入;not null;" json:"driver_revenue"`        // 司机收入
	Fee             float64   `gorm:"column:fee;type:decimal(10, 2);comment:服务费;not null;" json:"fee"`                               // 服务费
	Status          uint8     `gorm:"column:status;type:tinyint UNSIGNED;comment:状态 1-待对账 2-已对账 3-异常;not null;" json:"status"`                // 状态 1-待对账 2-已对账 3-异常
	TransactionTime time.Time `gorm:"column:transaction_time;type:datetime;comment:交易时间;not null;" json:"transaction_time"`                   // 交易时间
	IsActive        uint8     `gorm:"column:is_active;type:tinyint UNSIGNED;comment:是否启动;not null;" json:"is_active"`                         // 是否启动
	CreateAt        time.Time `gorm:"column:create_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"create_at"`
	UpdateAt        time.Time `gorm:"column:update_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"update_at"`
	Remark          string    `gorm:"column:remark;type:varchar(255);comment:备注;not null;" json:"remark"`                                      // 备注
	PayWay          uint8     `gorm:"column:pay_way;type:tinyint UNSIGNED;comment:支付方式 1-支付宝 2-微信 3-信用卡 4-电子钱包 5-其他;not null;" json:"pay_way"` // 支付方式 1-支付宝 2-微信 3-信用卡 4-电子钱包 5-其他
}

func (f *FinancialReconciliation) TableName() string {
	return "financial_reconciliation"
}

// 创建财务对账记录
func (f *FinancialReconciliation) CreateFinancialReconciliation() error {
	return config.DB.Create(f).Error
}
